<?php

namespace Sistema\AdminBundle\Entity;

use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;

/**
 * Sistema\AdminBundle\Entity\Grupo
 *
 * @ORM\Table(name="Grupo")
 * @ORM\Entity
 */
class Grupo
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $tipo
     *
     * @ORM\Column(name="tipo", type="string", length=200, nullable=false)
     * @Assert\Regex(pattern="/^[a-zA-ZñÑ\_]+$/", message="no puede ingresar numeros")
     */
    private $tipo;

    /**
     * @var Torneo
     *
     * @ORM\ManyToOne(targetEntity="Torneo")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_torneo", referencedColumnName="id", onDelete="CASCADE")
     * }) 
     */
    private $idTorneo;
    
    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Categoria", inversedBy="idGrupo")
     * @ORM\JoinTable(name="Categoria_de_grupo",
     *   joinColumns={
     *     @ORM\JoinColumn(name="id_grupo", referencedColumnName="id", onDelete="CASCADE")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="id_categoria", referencedColumnName="id")
     *   }
     * )
     */
    private $idCategoria;
    
        /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Equipo", inversedBy="idGrupo")
     * @ORM\JoinTable(name="Equipo_inscripto_grupo_torneo",
     *   joinColumns={
     *     @ORM\JoinColumn(name="id_grupo", referencedColumnName="id", onDelete="CASCADE")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="id_equipo", referencedColumnName="id", onDelete="CASCADE")
     *   }
     * )
     */
    private $idEquipo;
    
    /**
     * @ORM\OneToMany(targetEntity="Fecha", mappedBy="idGrupo", cascade={"remove"})
     */
    private $idFecha;
    
    /**
     * Constructor
     */
    public function __construct()
    {
        $this->idCategoria = new \Doctrine\Common\Collections\ArrayCollection();
        $this->idEquipo = new \Doctrine\Common\Collections\ArrayCollection();
    }

    public function __toString() {
        return $this->getTipo().' - '.$this->getIdTorneo();
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set tipo
     *
     * @param string $tipo
     * @return Grupo
     */
    public function setTipo($tipo)
    {
        $this->tipo = $tipo;
    
        return $this;
    }

    /**
     * Get tipo
     *
     * @return string 
     */
    public function getTipo()
    {
        return $this->tipo;
    }

    /**
     * Set idTorneo
     *
     * @param Sistema\AdminBundle\Entity\Torneo $idTorneo
     * @return Grupo
     */
    public function setIdTorneo(\Sistema\AdminBundle\Entity\Torneo $idTorneo = null)
    {
        $this->idTorneo = $idTorneo;
    
        return $this;
    }

    /**
     * Get idTorneo
     *
     * @return Sistema\AdminBundle\Entity\Torneo 
     */
    public function getIdTorneo()
    {
        return $this->idTorneo;
    }

    /**
     * Add idCategoria
     *
     * @param Sistema\AdminBundle\Entity\Categoria $idCategoria
     * @return Grupo
     */
    public function addIdCategoria(\Sistema\AdminBundle\Entity\Categoria $idCategoria)
    {
        $this->idCategoria[] = $idCategoria;
    
        return $this;
    }

    /**
     * Remove idCategoria
     *
     * @param Sistema\AdminBundle\Entity\Categoria $idCategoria
     */
    public function removeIdCategoria(\Sistema\AdminBundle\Entity\Categoria $idCategoria)
    {
        $this->idCategoria->removeElement($idCategoria);
    }

    /**
     * Get idCategoria
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdCategoria()
    {
        return $this->idCategoria;
    }
    
    /**
     * Add idEquipo
     *
     * @param Sistema\AdminBundle\Entity\Equipo $idEquipo
     * @return Torneo
     */
    public function addIdEquipo(\Sistema\AdminBundle\Entity\Equipo $idEquipo)
    {
        $this->idEquipo[] = $idEquipo;
    
        return $this;
    }

    /**
     * Remove idEquipo
     *
     * @param Sistema\AdminBundle\Entity\Equipo $idEquipo
     */
    public function removeIdEquipo(\Sistema\AdminBundle\Entity\Equipo $idEquipo)
    {
        $this->idEquipo->removeElement($idEquipo);
    }

    /**
     * Get idEquipo
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdEquipo()
    {
        return $this->idEquipo;
    }

    /**
     * Add idFecha
     *
     * @param Sistema\AdminBundle\Entity\Fecha $idFecha
     * @return Grupo
     */
    public function addIdFecha(\Sistema\AdminBundle\Entity\Fecha $idFecha)
    {
        $this->idFecha[] = $idFecha;
    
        return $this;
    }

    /**
     * Remove idFecha
     *
     * @param Sistema\AdminBundle\Entity\Fecha $idFecha
     */
    public function removeIdFecha(\Sistema\AdminBundle\Entity\Fecha $idFecha)
    {
        $this->idFecha->removeElement($idFecha);
    }

    /**
     * Get idFecha
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getIdFecha()
    {
        return $this->idFecha;
    }
}
